// app.js
const api = require('./utils/api');
const auth = require('./utils/auth');

App({
  onLaunch() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 获取用户信息
    const userInfo = wx.getStorageSync('userInfo');
    const token = wx.getStorageSync('token');
    if (userInfo && token) {
      this.globalData.userInfo = userInfo;
      this.globalData.isLogin = true;
      this.globalData.token = token;
      
      // 尝试获取微信用户信息
      wx.getSetting({
        success: res => {
          if (res.authSetting['scope.userInfo']) {
            // 已经授权，可以直接调用 getUserInfo 获取头像昵称
            wx.getUserInfo({
              success: res => {
                this.globalData.wxUserInfo = res.userInfo;
                console.log('获取到微信用户信息:', res.userInfo);
              }
            });
          }
        }
      });
    }
  },
  
  // 检查用户授权情况
  checkUserAuth() {
    wx.getSetting({
      success: res => {
        if (res.authSetting['scope.userInfo']) {
          // 已经授权，可以直接调用 getUserInfo 获取头像昵称
          wx.getUserInfo({
            success: res => {
              this.globalData.wxUserInfo = res.userInfo;
              
              // 如果已经登录，更新用户信息
              if (this.globalData.isLogin && this.userInfoReadyCallback) {
                this.userInfoReadyCallback(res);
              }
            }
          });
        }
      }
    });
  },
  
  // 微信登录
  wxLogin() {
    wx.login({
      success: res => {
        if (res.code) {
          // 发送 res.code 到后台换取 token
          console.log('微信登录成功，code:', res.code);
          
          // 获取用户信息
          wx.getSetting({
            success: settingRes => {
              if (settingRes.authSetting['scope.userInfo']) {
                // 已经授权，获取用户信息
                wx.getUserInfo({
                  success: userRes => {
                    const userInfo = userRes.userInfo;
                    
                    // 调用后端接口，使用code和用户信息换取token
                    this.globalData.api.user.wxLogin({
                      code: res.code,
                      userInfo: userInfo
                    })
                      .then(result => {
                        if (result.code === 200 && result.data) {
                          // 登录成功，保存token和用户信息
                          const { token, userInfo } = result.data;
                          
                          // 存储到本地
                          wx.setStorageSync('token', token);
                          wx.setStorageSync('userInfo', userInfo);
                          
                          // 更新全局状态
                          this.globalData.token = token;
                          this.globalData.userInfo = userInfo;
                          this.globalData.isLogin = true;
                          this.globalData.wxUserInfo = userRes.userInfo;
                          
                          console.log('微信登录成功，获取到用户信息');
                        }
                      })
                      .catch(err => {
                        console.error('微信登录失败', err);
                      });
                  }
                });
              } else {
                // 未授权，只发送code
                this.globalData.api.user.wxLogin({
                  code: res.code
                }).catch(err => {
                  console.error('微信登录失败', err);
                });
              }
            }
          });
        } else {
          console.error('微信登录失败', res);
        }
      },
      fail: err => {
        console.error('微信登录接口调用失败', err);
      }
    });
  },
  
  // 全局数据
  globalData: {
    userInfo: null, // 后端返回的用户信息
    wxUserInfo: null, // 微信返回的用户信息
    isLogin: false,
    token: null,
    api: api,
    auth: auth,
    apiBaseUrl: 'http://localhost:8080' // API请求的基础URL
  }
})
